imprimirTabla(crearTabla(4,3));

function marca( m ) {
  return "<"+m+">";
}

function finmarca( m ) {
  return "</"+m+">";
}

function celda( contenido ) {
  return marca("td")+contenido+finmarca("td");
}

function crearTabla(filas, columnas){
	var tabla= new Array(columnas);
	for(i=0;i<filas;i++){
		tabla[i]=new Fila;
		for (j=0;j<columnas;j++){
			tabla[i].definirValor(i*columnas+j+1,j)
		}
	}
	return tabla;
}

function imprimirTabla(tabla){
	print( marca('table'));
	for (i in tabla){
		print( marca( 'tr' ));
		for (j in tabla[i].celdas){
			print(celda('Celda '+tabla[i].celdas[j]))
		}
		print ( finmarca('tr'));
	}
	return tabla;
}

function Fila(columnas){
	this.columnas=columnas;
	this.celdas=new Array(columnas);
	this.definirValor=definirValor;
}

function definirValor(valor,columna){
	this.celdas[columna]=valor;
}
